/* 	File		: IOGame.h
 *	Nama penanggunag jawab	: Ahmad Anshorimuslim Syuhada
 * 	NIM			: 13509064
 * 	Deskripsi	: Header untuk class IO
*/

//Mendefinisikan header file
#ifndef IOGAME_H
#define IOGAME_H

//header file-file library
#include <iostream>
#include <fstream>
#include <shlobj.h>
#include <stdio.h>
#include <string>
#include <windows.h>
#include <stdlib.h>
#include <dirent.h>

//header file dari class lain
// #ifdef __WIN32__
#include "../player/PLAYER.h"
#include "../waktu/waktu1.1.h"
#include "../allmap/Area.h"
#include "../tanaman/tanaman.h"
#include "../tanaman/ganja.h"
#include "../tanaman/anggur.h"
#include "../tanaman/mushroom.h"
#include "../tanaman/opium.h"
#include "../tanaman/tobacco.h"
#include "../tanaman/coca.h"
// #else
// #include "../Command/command.h"
// #endif

using namespace std;

class IOGame{
	private :
		string namaf; //menyimpan nama file
		string folder; //menyimpan path file
		
	public :
	/* Konstruktor */	
		IOGame(); //constructor
		IOGame(const string&); //copy constructor
	
	/* Destruktor */	
		~IOGame();
		
	/* Other Method */	
		
		string GetName(); //mengembalikan nama file
		
		void SetName(string); //men-set nama file
		
		void OpenFarm(Player*, waktu*, AllMap*, string); //method utama me-load data permainan, sudah ada nama file
		
		void SaveFarm(Player*, waktu*, AllMap*, string); //method utama men-save data permainan, sudah ada nama file
		
		void SaveFarmE(Player*, waktu*, AllMap*); //prompt untuk save file, memilih path dan nama file
		
		void OpenMap(AllMap*); //method utama me-load map rumah, toko, ekstensi lahan -> statik
		
		string GetFolder(); //mengembalikan path file
		
		void SetFolder(); //menset path file
		
		//string BrowseFile(bool); //ini belum tersedia
		
		// void SearchFile(string, bool&); //menghasilkan nilai true jika file tersebut sudah ada
		
		void ListFile(); //me-list daftar file pada tingkat direktori yang sama
		
		Tanaman* KonvInv(int); //mengembalikan pointer to objek tanaman, sesuai ID tertentu. untuk proses load
		
		void LoadPetak(ifstream*, AllMap*);
		void LoadWaktu(ifstream*, waktu*);
		void LoadTanam(ifstream*, AllMap*);
		void LoadPlayer(ifstream*, Player*);
};

#endif
